package com.example.blogdemo1.common.utils;

import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;

import java.util.UUID;

/*
 * @author zzr
 * @date: 2025/10/08  23:04
 * @description:
 */
public class SecurityUtils {

    /**
     * 对密码加密
     * @param password
     * @return
     */
    public static String encrypt(String password) {
        // 生成内容不同的，但长度固定的 32 位的盐值
        String salt = UUID.randomUUID().toString().replace("-","");
        // 最终密码 = md5（salt + 原始密码）
        String finalPassword = DigestUtils.md5DigestAsHex((salt+password).getBytes());
        return salt + finalPassword;
    }

    public static boolean verify(String password, String finalPassword) {
        // 非空校验
        if(!StringUtils.hasLength(password) || !StringUtils.hasLength(finalPassword)) {
            return false;
        }

        // 最终密码不是 64 位，不正确
        if (finalPassword.length() != 64) {
            return false;
        }
        // 盐
        String salt = finalPassword.substring(0,32);
        // 使用盐 + 待确认密码生成一个最终密码
        String securityPassword = DigestUtils.md5DigestAsHex((salt + password).getBytes());

        // 使用盐+最终的密码和数据库密码对比
        return (salt + securityPassword).equals(finalPassword);
    }

    public static void main(String[] args) {
        String finalPassword = encrypt("123456");
        System.out.println(finalPassword);
        System.out.println(verify("123456",finalPassword));
    }
}
